Amazon QuickSightでソースデータの日付列の値をもとに曜日列を定義して可視化してみた
こんにちは、CX事業本部の若槻です。
今回は、Amazon QuickSightでソースデータの日付列の値をもとに曜日列を定義して可視化してみました。
やってみる
ソースデータの入手
今回、ソースデータには「東京都 新型コロナウイルス感染症対策サイト」の報告日別による陽性者数の推移のデータを使用しました。
サイトを開き、[報告日別による陽性者数の推移]の[オープンデータを入手]をクリックします。
「東京都オープンデータカタログサイト」のデータセットページが開くので、[探索] - [ダウンロード]をクリックしてソースデータのCSVファイルをダウンロードします。
QuickSightのデータセットにファイルをアップロード
Amazon QuickSightのコンソールを開き、[データセット]タブで[新しいデータセット]をクリック。
[ファイルのアップロード]をクリック。
先程ダウンロードしたCSVファイルを開きます。
ダイアログで[設定の編集とデータの準備]をクリック。
データセットにデータが読み込まれました。
データの列は次のようになっています。
- No(Int)
- 全国地方公共団体コード(Int)
- 都道府県名(String)
- 市区町村名(String)
- 公表_年月日(Data)
- 発症_年月日(String)
- 確定_年月日(String)
- 患者_居住地(String)
- 患者_年代(String)
- 患者_性別(String)
- 患者_職業(String)
- 患者_状態(String)
- 患者_症状(String)
- 患者_渡航歴の有無フラグ
- 患者_接触歴の有無フラグ
- 備考(String)
- 退院済フラグ(Int)
そのうち日付を表す列は公表_年月日
、発症_年月日
、確定_年月日
ですが、今回は値が必ず入っている公表_年月日
列をもとにして曜日列を定義したいと思います。
「曜日番号」列の定義
ここでは、実際の曜日名(日
、月
、火
...)を表す「曜日」列を定義する前に、まず曜日を番号で表す「曜日番号」列を定義します。QuickSightでカスタム列を定義したい場合は計算フィールドを使用します。
[計算フィールドを追加]をクリック。
ここで、日付値をもとにした情報を取得したい場合はextract関数を使用します。
今回の場合は第一引数にWD
、第二引数に列名公表_年月日
を指定すれば、行毎の曜日を番号で取得できます。(日曜日が1
)
extract('WD', 公表_年月日)
列名として曜日番号
、エディターにextract('WD', 公表_年月日)
を入力し、[保存]をクリック。
データセットに計算フィールドとして「曜日番号」列を追加できました。
[保存]をクリックしてデータセットを一度保存します。
「曜日」列を定義
今度は「曜日」列の定義を行います。
[データセット]タブで先程保存したデータセットをクリック。
下記のようなダイアログが開くので、[データセットの編集]をクリック。
[計算フィールドを追加]をクリック。
ここで、日付番号列の値をもとに日
、月
、火
…を定義したい場合はifelse関数を使用します。
列名に曜日
、エディターに下記計算式を入力し、[保存]をクリック。
ifelse( 曜日番号 = 1, "日", 曜日番号 = 2, "月", 曜日番号 = 3, "火", 曜日番号 = 4, "水", 曜日番号 = 5, "木", 曜日番号 = 6, "金", "土" )
計算フィールドとして「曜日」列が追加されました。[保存して視覚化]をクリック。
「曜日」列を軸にしたグラフで可視化してみる
先程のデータセットの分析ページが開きます。[ビジュアルタイプ]として垂直積み上げ棒グラフ
を選択します。
フィールドリストから曜日
を[X軸]に追加します。すると「曜日ごとの患者数(公表日ベース)」が可視化できました。しかしX軸を見ると曜日順に並んでいません。なのでこれを曜日順に並ぶようにします。
グラフの領域右下を摘んで引き伸ばすと、グラフ下部に[v]が表示されるのでクリックし、表示されたメニューで[曜日]の[>] - [並び替えオプション]を選択。
すると[並び替えオプション]が表示されるので、[フィールドを選択]で曜日番号
を選択。
[適用]をクリック。
X軸を日
から始まる曜日順に並び替えできました。
おわりに
Amazon QuickSightでソースデータの日付列の値をもとに曜日列をカスタムフィールドとして定義してみました。
実際のケースにおいては、可視化するデータへの曜日列の付加は本当はETL側で処理するべきなのでしょうが、QuickSight側でもある程度柔軟にデータがいじれるのは良いですね。
以上